/*
题目: 接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。
 */
public class TrapPtr {
    public int trap(int[] height) {
        //方法一：双指针
        int left = 0;
        int right = height.length - 1;
        int leftMax = 0;//分别维护左右的最大值
        int rightMax = 0;
        int water = 0;//水滴总量
        while (left < right) {
            leftMax = Math.max(leftMax, height[left]);
            rightMax = Math.max(rightMax, height[right]);
            if (height[left] < height[right]) {
                water += leftMax - height[left];
                left++;
            } else {
                water += rightMax - height[right];
                right--;
            }
        }
        return water;
    }
}
